home *** CD-ROM | disk | FTP | other *** search
- #include "sky.h"
-
- halley()
- {
- double pturbl, pturbb, pturbr;
- double lograd;
- double dele, enom, vnom, nd, sl;
-
- double sd, ca, sa;
-
- object = "Halley's ";
-
- ecc = 0.9672760;
- incl = 162.23928;
- node = 58.14536;
- argp = 111.84809 + 58.14536;
- mrad = .5871047/(1. - ecc);
- anom = eday - (2446470.95174 - 2415020.);
- motion = .01720209895*sqrt(1./(mrad*mrad*mrad))/radian;
- anom *= motion;
-
- node += 0.4593;
- argp += 0.4066;
-
- anom *= radian;
- incl *= radian;
- node *= radian;
- argp *= radian;
-
- enom = anom + ecc*sin(anom);
- do {
- dele = (anom - enom + ecc * sin(enom)) /
- (1. - ecc*cos(enom));
- enom += dele;
- } while(fabs(dele) > 1.e-8);
- vnom = 2.*atan2(sqrt((1.+ecc)/(1.-ecc))*sin(enom/2.),
- cos(enom/2.));
- rad = mrad*(1. - ecc*cos(enom));
-
- lambda = vnom + argp;
-
- pturbl = 0.;
-
- lambda += pturbl*radsec;
-
- pturbb = 0.;
-
- pturbr = 0.;
-
- /*
- * reduce to the ecliptic
- */
-
- nd = lambda - node;
- lambda = node + atan2(sin(nd)*cos(incl),cos(nd));
-
- sl = sin(incl)*sin(nd) + pturbb*radsec;
- beta = atan2(sl, sqrt(1.-sl*sl));
-
- lograd = pturbr*2.30258509;
- rad *= 1. + lograd;
-
- motion *= radian*mrad*mrad/(rad*rad);
- semi = 0.;
-
- mag = 5.47 + 6.1/2.303*log(rad);
-
- helio();
- geo();
- }
-